Don't unnecessarily reset the im context when deleting the selection.
authorMatthias Clasen <mclasen@redhat.com>
Fri, 1 Sep 2006 14:44:06 +0000 (14:44 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Fri, 1 Sep 2006 14:44:06 +0000 (14:44 +0000)
2006-09-01  Matthias Clasen  <mclasen@redhat.com>
        * gtk/gtkentry.c: Don't unnecessarily reset the im context
        when deleting the selection.  (#353803, Alex Larsson)

ChangeLog
gtk/gtkentry.c

index 448d5a92071e0414ca17a79d763a889c8b5aaef8..c972a11bd91645249b5b055f5cb0babc44e0e46f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-09-01  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkentry.c: Don't unnecessarily reset the im context
+       when deleting the selection.  (#353803, Alex Larsson)
+
 2006-09-01  Abel Cheung  <abel@oaka.org>
 
        * configure.in: Added 'ang' 'dz' to ALL_LINGUAS.
index acf77b86fe7504323815e7e9c5d2e008888671e8..a78679184802e2dc46c8c6a49809f0ece14fceeb 100644 (file)
@@ -2183,29 +2183,22 @@ gtk_entry_get_chars      (GtkEditable   *editable,
 }
 
 static void
-gtk_entry_set_position_internal (GtkEntry    *entry,
-                                gint         position,
-                                gboolean     reset_im)
+gtk_entry_real_set_position (GtkEditable *editable,
+                            gint         position)
 {
+  GtkEntry *entry = GTK_ENTRY (editable);
+
   if (position < 0 || position > entry->text_length)
     position = entry->text_length;
 
   if (position != entry->current_pos ||
       position != entry->selection_bound)
     {
-      if (reset_im)
-       _gtk_entry_reset_im_context (entry);
+      _gtk_entry_reset_im_context (entry);
       gtk_entry_set_positions (entry, position, position);
     }
 }
 
-static void
-gtk_entry_real_set_position (GtkEditable *editable,
-                            gint         position)
-{
-  gtk_entry_set_position_internal (GTK_ENTRY (editable), position, TRUE);
-}
-
 static gint
 gtk_entry_get_position (GtkEditable *editable)
 {
@@ -2926,6 +2919,10 @@ gtk_entry_enter_text (GtkEntry       *entry,
 {
   GtkEditable *editable = GTK_EDITABLE (entry);
   gint tmp_pos;
+  gboolean old_need_im_reset;
+
+  old_need_im_reset = entry->need_im_reset;
+  entry->need_im_reset = FALSE;
 
   if (gtk_editable_get_selection_bounds (editable, NULL, NULL))
     gtk_editable_delete_selection (editable);
@@ -2937,7 +2934,9 @@ gtk_entry_enter_text (GtkEntry       *entry,
 
   tmp_pos = entry->current_pos;
   gtk_editable_insert_text (editable, str, strlen (str), &tmp_pos);
-  gtk_entry_set_position_internal (entry, tmp_pos, FALSE);
+  gtk_editable_set_position (editable, tmp_pos);
+
+  entry->need_im_reset = old_need_im_reset;
 }
 
 /* All changes to entry->current_pos and entry->selection_bound